﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.InteropServices;



//************************************************
// Segmentation
// Haalt de "zwarte" letters uit het nummerbord en maakt daar een lijst van bitmaps van
// Werkt niet als aan de boven of onderkant zwarte lijnen zitten.
// Mathijs Kuijl en Guido van Hienen
//************************************************

namespace THO7AlgoritmTimerApplication
{
    class Segmentation
    {
        public List<Bitmap> regonize(Bitmap sourceImage)
        {
            VisionAlgorithm mf = new MaxFilter("","Min");
            sourceImage = mf.DoAlgorithm(sourceImage);
            sourceImage = sourceImage.Clone(new Rectangle(0,0,sourceImage.Width,sourceImage.Height),PixelFormat.Format1bppIndexed);
            
            int j=0;
            List<Bitmap> BB = new List<Bitmap>();
            int startpunt = 0;
            Boolean Zwartgevonden = false;
            for (int i = 20; i < sourceImage.Width - 1; i++)
            {

                for (int ii = sourceImage.Height / 10; (ii <sourceImage.Height- (sourceImage.Height / 10)); ii++)
                {

                    if (sourceImage.GetPixel(i, ii) == Color.FromArgb(255, 0, 0, 0))
                    {
                        if (Zwartgevonden == false)
                        {
                            startpunt = i;
                        }
                        Zwartgevonden = true;
                        break;
                    }

                    if (Zwartgevonden == true && ii == sourceImage.Height - 1 - sourceImage.Height / 10)
                    {
                        Rectangle rect = new Rectangle(startpunt, 0, i-startpunt, sourceImage.Height-1);
                        Bitmap temp = sourceImage.Clone(rect, sourceImage.PixelFormat);
                        j++;
                        //temp.Save("C:\\Users\\Acer\\Desktop\\Nieuwe map\\test" + j + ".jpg");
                        temp.Save("test" + j + ".jpg");
                        BB.Add(temp);
                        Zwartgevonden = false;
                    }
                    
                }


            }
            return BB;


        }
    }
}
